/* 1752. 检查数组是否经排序和轮转得到 */
/**
 * @param {number[]} nums
 * @return {boolean}
 */
var check = function (nums) {
	const _nums = [...nums].sort((a, b) => a - b)
	if (nums.toString() === _nums.toString()) return true
	const first = nums[0]
	let index = _nums.indexOf(first)
	while (index < nums.length && _nums[index] === first) {
		const __nums = [..._nums.slice(index), ..._nums.slice(0, index)]
		if (nums.toString() === __nums.toString()) return true
		index++
	}
	return false
}
// 直接遍历
var check = function (nums) {
	let n = nums.length,
		x = 0 // 轮转的位置
	for (let i = 1; i < n; i++) {
		// 找递减的第一个
		if (nums[i] < nums[i - 1]) {
			x = i
			break
		}
	}
	// 源数组
	if (x === 0) return true
	// 看是否都满足升序
	for (let i = x + 1; i < n; i++) {
		if (nums[i] < nums[i - 1]) {
			return false
		}
	}
	// 还需检查所有元素是否都满足 小于等于 nums[0]
	// 这个是反转过后的 最后一个元素一定是后面的最大值 第一个值是前面的最小值
	return nums[0] >= nums[n - 1]
}
var check = function (nums) {
	return [...nums, ...nums]
		.join('.')
		.includes(nums.sort((a, b) => a - b).join('.'))
}
const res = check([3, 4, 5, 1, 2])
console.log('check :>>', res)
